package fr.esisar.cs420.swt;
import java.io.InputStream;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.wb.swt.SWTResourceManager;

import fr.esisar.cs420.traitement.Album;
import fr.esisar.cs420.traitement.Utilisateur;




/**
 * Classe      : Accueil
 * Explication : Classe permettant de créer un composite représentant l'accueil utilisateur de l'application
 * @author Hermitte
 *
 */
public class Accueil extends Composite {

	/**
	 * Attribut représentant les valeurs des champs texte
	 */
   private static  Text mail;
   private static Text mdp;
   private static Text textVisualisation;
   private Text erreurConnexion;
        
        
     /**
     * Création du composite
     * @param parent
     * @param style
     */
    public Accueil(final Composite parent, int style) {
            super(parent, style);
            
            /* Création du Groupe Connection */
            Group grpConnection = new Group(this, SWT.NONE);
            grpConnection.setText("Connexion");
            grpConnection.setBounds(24, 10, 318, 96);
            
            /* Création du Groupe Compte */
            Group grpCompte = new Group(this, SWT.NONE);
            grpCompte.setText("Compte");
            grpCompte.setBounds(357, 10, 285, 96);
            
            /* Création du Groupe Visualisation */
            Group grpVisualisation = new Group(this, SWT.NONE);
            grpVisualisation.setText("Visualisation");
            grpVisualisation.setBounds(357, 115, 285, 235);
            
            /* Initialisation du texte Mail */
            mail = new Text(grpConnection, SWT.BORDER);
            mail.setText("admin");
            mail.setBounds(10, 25, 128, 21);
            
            /* Initialisation du texte MotDePasse */
            mdp = new Text(grpConnection, SWT.BORDER | SWT.PASSWORD);
            mdp.setText("admin");
            mdp.setBounds(144, 25, 128, 21);
            
            /* Initialisation du texte Erreur Connexion */
            erreurConnexion = new Text(grpConnection, SWT.NONE);
            erreurConnexion.setBackground(SWTResourceManager.getColor(SWT.COLOR_WIDGET_BACKGROUND));
            erreurConnexion.setBounds(92, 65, 135, 21);
            
            /* Initialisation du texte Visualisation */
            textVisualisation = new Text(grpVisualisation, SWT.BORDER | SWT.CENTER | SWT.MULTI);
            textVisualisation.setBackground(SWTResourceManager.getColor(SWT.COLOR_WIDGET_BACKGROUND));
            textVisualisation.setText("PhotoNum vous propose de voir\r\nles albums et livres publics mise à disposition\r\npar nos clients.\r\n\r\n\r\nAccedez à une atmosphère Unique !\r\n\r\n\r\n         ");
            textVisualisation.setBounds(10, 29, 265, 132);
            
            /* Création du label Visualisation */
            Label labelCompte = new Label(grpCompte, SWT.NONE);
            labelCompte.setBounds(23, 27, 180, 15);
            labelCompte.setText("Toujours pas de compte ?");
            
            /* Création du label Visualisation */
            Label labelLogo = new Label(this, SWT.NONE);
            InputStream is =  getClass().getResourceAsStream("/Logo.png");
            
            /* Chargement et affichage du logo */
            Image image = new Image(parent.getDisplay(), is) ;
            labelLogo.setImage(image);
            labelLogo.setBounds(24, 104, 318, 263);
            
            /* Création du bouton Login */
            Button btnLogin = new Button(grpConnection, SWT.NONE);
            /* Gestion de l'evenement sur le bouton Login */
            btnLogin.addMouseListener(new MouseAdapter() {
                    @Override
                    public void mouseDown(MouseEvent e) {
                    	
                    		/* Si l'administrateur se connecte */
                    		if(mail.getText().equals("admin") && mdp.getText().equals("admin") ){
                    			try {
                    				Display display = Display.getDefault();
                    				Statistique shell = new Statistique(display);
                    				shell.open();
                    				shell.layout();
                    				while (!shell.isDisposed()) {
                    					if (!display.readAndDispatch()) {
                    						display.sleep();
                    					}
                    				}
                    			} catch (Exception e1) {
                    				e1.printStackTrace();
                    			}
                    		}
                    		/* Si un client se connecte */
                    		else{
                                erreurConnexion.setText("");
                                    
                                /* Si le login et le motDepasse sont bon */
                                if ( verifConnexion() ){
                                                                
                                        parent.dispose();
                                        
                                        /* Lancement de l'accueil Client */
                                        try {
                                                Display display = Display.getDefault();
                                                InterfaceClient shell = new InterfaceClient(display);
                                                shell.open();
                                                shell.layout();
                                                while (!shell.isDisposed()) {
                                                        if (!display.readAndDispatch()) {
                                                                display.sleep();
                                                        }
                                                }
                                        } catch (Exception e1) {
                                                e1.printStackTrace();
                                        }
                                
                                }
                                /* Erreur Connection */
                                else{
                                        
                                        erreurConnexion.setText("idf ou mdp incorrect");
                                }
                    		}            
                    }
            });
            btnLogin.setBounds(233, 61, 75, 25);
            btnLogin.setText("Login");
            
            /* Création du bouton Quitter */
            Button btnQuitter = new Button(grpConnection, SWT.NONE);
            /* Gestion de l'evenement sur le bouton Quitter */
            btnQuitter.addMouseListener(new MouseAdapter() {
                    @Override
                    public void mouseDown(MouseEvent e) {
                            
                    		/* On ferme la fenetre */
                            parent.dispose();
                    }
            });
            btnQuitter.setBounds(10, 61, 75, 25);
            btnQuitter.setText("Quitter ");

            /* Création du bouton CreationCompte */
            Button btnCreationDunCompte = new Button(grpCompte, SWT.NONE);
            /* Gestion de l'evenement sur le bouton CreationCompte */
            btnCreationDunCompte.addMouseListener(new MouseAdapter() {
                    @Override
                    public void mouseDown(MouseEvent e) {
                            
                    		/* Lancement de l'interface CreationCompte */
                            try {
                                    Display display = Display.getDefault();
                                    CreationCompte shell = new CreationCompte(display);
                                    shell.open();
                                    shell.layout();
                                    while (!shell.isDisposed()) {
                                            if (!display.readAndDispatch()) {
                                                    display.sleep();
                                            }
                                    }
                            } catch (Exception e1) {
                                    e1.printStackTrace();
                            }
                            
                            
                    }
            });
            btnCreationDunCompte.setBounds(133, 61, 130, 25);
            btnCreationDunCompte.setText("Création d'un Compte");
  
            /* Création du bouton VoirAlbumsPublics */
            Button btnVoirLesAlbumsPublics = new Button(grpVisualisation, SWT.NONE);
            /* Gestion de l'evenement sur le bouton VoirAlbumsPublics */
            btnVoirLesAlbumsPublics.addMouseListener(new MouseAdapter() {
                    @Override
                    public void mouseDown(MouseEvent e) {
                            
                    		/* Lancement de l'interface VisualiseAlbum */
                            try {
                                    Display display = Display.getDefault();
                                    VisualiseAlbum shell = new VisualiseAlbum(display,1);
                                    shell.open();
                                    shell.layout();
                                    while (!shell.isDisposed()) {
                                            if (!display.readAndDispatch()) {
                                                    display.sleep();
                                            }
                                    }
                            } catch (Exception e1) {
                                    e1.printStackTrace();
                    }
                            
                            Album.removeAlbum();
                            
                    }
            });
            btnVoirLesAlbumsPublics.setBounds(60, 167, 167, 25);
            btnVoirLesAlbumsPublics.setText("Voir les Albums publics");
            
            /* Création du bouton VoirLesLivresPublics */
            Button btnVoirLesLivresPublics = new Button(grpVisualisation, SWT.NONE);
            /* Gestion de l'evenement sur le bouton VoirLesLivresPublics */
            btnVoirLesLivresPublics.addMouseListener(new MouseAdapter() {
                    @Override
                    public void mouseDown(MouseEvent e) {
                            
                    	/* Lancement de l'interface VisualiseLivre */
                            try {
                                    Display display = Display.getDefault();
                                    VisualiseLivre shell = new VisualiseLivre(display,1);
                                    shell.open();
                                    shell.layout();
                                    while (!shell.isDisposed()) {
                                            if (!display.readAndDispatch()) {
                                                    display.sleep();
                                            }
                                    }
                            } catch (Exception e1) {
                                    e1.printStackTrace();
                    }
                            
                            Album.removeAlbum();
                            
                            
                    }
            });
            btnVoirLesLivresPublics.setBounds(60, 198, 167, 25);
            btnVoirLesLivresPublics.setText("Voir les Livres publics");

    }
    
    /**
     * Méthode permettant de verifier le login et le motDePasse
     * 
     * @return boolean : True  : Connexion du client validée
     * 				   : False : Connexion du client non validée : motDePasse ou login faux
     */
    public boolean verifConnexion(){
                
                return Utilisateur.seConnecter(mail.getText(), mdp.getText());
                
        }
        
}
